package repositorio;

import logica.Banco;
import logica.Categoria;
import logica.Consumo;
import logica.Estadia;
import logica.Estado;
import logica.Factura;
import logica.Habitacion;
import logica.Itempago;
import logica.Localidad;
import logica.Mediopago;
import logica.Moneda;
import logica.Notadecredito;
import logica.Paga;
import logica.Pago;
import logica.Pai;
import logica.Pasajero;
import logica.Permanece;
import logica.Persona;
import logica.Producto;
import logica.Provincia;
import logica.Reserva;
import logica.Responsablepago;
import logica.Situacioniva;
import logica.Tarjetascredito;
import logica.Tarjetasdebito;
import logica.Tipodoc;
import logica.Usuario;

import org.hibernate.SessionFactory;
import org.hibernate.cfg.AnnotationConfiguration;

public class FabricaSessionFactory {
	
	static SessionFactory factory;
	
	public FabricaSessionFactory(){

	}

	public static SessionFactory getFactory() {
		if (factory==null){
			AnnotationConfiguration config = new AnnotationConfiguration();
			config.addAnnotatedClass(Banco.class); 
			config.addAnnotatedClass(Categoria.class); //se tienen que agregar todas las clases que tienen el entity
			config.addAnnotatedClass(Consumo.class);
			config.addAnnotatedClass(Estado.class);
			config.addAnnotatedClass(Estadia.class);
			config.addAnnotatedClass(Factura.class);
			config.addAnnotatedClass(Habitacion.class);
			config.addAnnotatedClass(Itempago.class);
			config.addAnnotatedClass(Localidad.class);
			config.addAnnotatedClass(Mediopago.class);
			config.addAnnotatedClass(Moneda.class); 
			config.addAnnotatedClass(Notadecredito.class);
			config.addAnnotatedClass(Paga.class);
			config.addAnnotatedClass(Pago.class);
			config.addAnnotatedClass(Pai.class);
			config.addAnnotatedClass(Pasajero.class);
			config.addAnnotatedClass(Persona.class);
			config.addAnnotatedClass(Permanece.class);
			config.addAnnotatedClass(Producto.class);
			config.addAnnotatedClass(Provincia.class);
			config.addAnnotatedClass(Reserva.class);
			config.addAnnotatedClass(Responsablepago.class);
			config.addAnnotatedClass(Situacioniva.class);
			config.addAnnotatedClass(Tarjetasdebito.class); 
			config.addAnnotatedClass(Tarjetascredito.class); 
			config.addAnnotatedClass(Tipodoc.class);
			config.addAnnotatedClass(Usuario.class);

			config.configure("hibernate.cfg.xml");//la linea que lee el archivo de configuracion entre hibernate y la BD, el string que tiene dentro no es necesario
			
			factory = config.buildSessionFactory();//instancia la BD? hay que intentar tener muy pocas de estas

			return factory;
		}
		else return factory;
	}
	
	
}
